<?php

/*
  二分查找
  url:https://blog.csdn.net/xuandaijian/article/details/49051143

  原理：每次都找该数组的某一段的中间项，并跟要找的目标进行“对比”
  1.如果刚好相等，则就算找出来了
  2.如果中间项比目标大，就只要去左边的那一半中找
  3.如果中间项比目标小，就只要去右边的那一半中找

 */
 
 //非递归
 //$target是要查找的目标 $arr是已经排序好的数组
 function binary($arr,$low,$top,$target){
    while($low<=$top){
		$mid = floor(($low+$top)/2);
		if($arr[$mid]==$target){
			return $mid;
		}elseif($arr[$mid]<$target){
			$low = $mid+1;
		}else{
            $top = $mid-1;
		}
	}
	return -1;
 }
 $arr = array(1,3,9,23,54);
 echo binary($arr, 0, count($arr),3);